Storage networking is the practice of connecting storage devices to computing devices (e.g., clients, servers, and the like) by using networks (e.g., Fibre Channel, Internet Small Computer System Interface (iSCSI), and others) instead of traditional point-to-point small computer system interface (SCSI) channels. A network used to connect servers to storage devices is referred to as a storage area network (SAN). Within a SAN environment, computing devices have access to the available storage devices. This presents a wide variety of benefits, including server platform fail-over wherein a failed storage device and failed server are automatically recovered by another operational server platform and operational storage device without requiring any recabling of the operational storage devices.
One aspect of storage management is the ability to create storage access transparency, which is often referred to as storage virtualization. Storage virtualization conceals the physical storage details from user/client applications that access the physical storage. Storage virtualization can optimize storage utilization and storage access throughput, so that multiple user/client applications can optimally and reliably access physical storage in a shared storage environment consisting of heterogeneous physical storage devices. Also, with storage virtualization the user/client applications are not required to manage the underlying details and interfaces associated with the physical storage devices.
Another aspect of effective storage management is the ability to backup or mirror the storage data residing on the physical storage devices, such that the data is redundantly available from multiple physical storage devices or recoverable from a previous point in time. The data redundancy permits the storage data to remain available should one of the physical storage devices housing the storage data fail or become otherwise unavailable to a user/client application (e.g., server failures, application failures, and the like). The data recoverability permits users to acquire desired versions of the data from a previous point in time.
Conventionally, a few techniques are used to backup storage data on multiple physical storage devices. First, storage data can be copied from one physical storage device to another physical storage device by taking a snapshot of the storage data associated with a primary physical storage device and then copying the storage data to a second backup physical storage device. To achieve this, a frozen image of the storage data is taken at a given moment in time from the primary physical storage device. In creating the frozen image a series of operations must be performed to ensure transactional consistency of the snapshot operation. For example, some operations will suspend applications accessing the storage data and flush from cache pending storage data altering operations (e.g., write operations). Secondly, storage data can be mirrored, such that when the storage data housed on the primary physical storage is altered, a mirrored storage data altering operation occurs on a mirrored second physical storage device.
Typically, when providing storage virtualization, storage management techniques will interject a middle layer of software that is interposed between user applications and the interfaces of the underlying physical storage devices. This middle layer of software is capable of centrally managing the physical storage devices and creating a virtual view of the storage data. In some cases the middle layer of software is embodied as a Volume Manager (VM) application. The VM will can also execute storage services (e.g., frozen images, mirrors, and the like) against the storage data in order to ensure High Availability (HA) of the underlying storage data.
Yet, in heterogeneous shared storage environments, the frozen images and mirrors are presented to the VM in a variety of different ways based on the different configurations and interfaces of the physical storage devices. Often, the differences exist because a number of the physical storage devices are provided from different vendors and correspondingly the physical storage devices provide disparate storage capabilities to the VM.
As a result, a VM operating in a heterogeneous shared storage environment becomes unduly complex with an abundance of complex exception software coding that is designed to handle disparate storage capabilities. The storage capabilities dictate how the storage data is managed and what can be done with any frozen image or mirror created with a particular storage operation.
Therefore, there is a need for techniques that provide improved storage services and systems, such that more consistency and normalization are available independent of the underlying interfaces provided by disparate physical storage devices.